home *** CD-ROM | disk | FTP | other *** search
/ MaxiMac 2000 December / MaxiMac 109.iso / Macworld on CD n°109 / Applications (Mac OS X PB) / MacOSX ScreenSavers / Source Code / Morphing Objects / GLMorph.m < prev    next >
Encoding:
Text File  |  2000-10-05  |  1.9 KB  |  102 lines  |  [????/????]

  1. /* GLMorph.m created by epeyton on Thu 03-Dec-1998 */
  2.  
  3. #import "GLMorph.h"
  4.  
  5. extern int mono;
  6. extern int smooth;
  7. extern int object;
  8.  
  9. @implementation GLMorph    
  10.  
  11. - (id)initWithFrame:(NSRect)frameRect
  12. {
  13.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  14.  
  15.     self = [super initWithFrame:frameRect];
  16.     if (self) {
  17.         _view = [[NSOpenGLView alloc] initWithFrame:frameRect];
  18.         [self addSubview:_view];
  19.     }
  20.     
  21.     [NSBundle loadNibNamed:@"GLMorph.nib" owner:self];
  22.     mono = [defaults integerForKey:@"GLMorphMono"];
  23.     smooth = [defaults integerForKey:@"GLMorphUnshaded"];
  24.     object = [defaults integerForKey:@"GLMorphObjectType"];
  25.  
  26.     if (!object) object = 1;
  27.     
  28.     [isMono setState:mono];
  29.     [isUnshaded setState:smooth];
  30.     [objectArray selectCellWithTag:object];
  31.  
  32.  
  33.     return self;
  34. }
  35.  
  36. - (NSTimeInterval)animationTimeInterval
  37. {
  38.     return 0.01;
  39. }
  40.  
  41. - (void)setFrameSize:(NSSize)newSize
  42. {
  43.     [super setFrameSize:newSize];
  44.     [_view setFrameSize:newSize];
  45.     _initedGL = NO;
  46.  
  47. }
  48.  
  49. - (void)drawRect:(NSRect)rects
  50. {
  51.     
  52.     [_view lockFocus];
  53.     
  54.     if (!_initedGL) {
  55.         pinit();
  56.         reshape((int)rects.size.width, (int)rects.size.height);
  57.  
  58.         _initedGL = YES;
  59.     }
  60.  
  61.     [_view unlockFocus];
  62. }
  63.  
  64.  
  65. - (void)oneStep
  66. {
  67.     if ([_view canDraw]) {
  68.         [_view lockFocus];
  69.         draw();
  70.         [_view unlockFocus];
  71.     }
  72.  
  73.     
  74.     return;
  75. }
  76.  
  77.  
  78. - (BOOL)hasConfigureSheet { return YES; }
  79. - (NSWindow*)configureSheet { return window; }
  80.  
  81. - (void)closeSheet:(id)sender
  82. {
  83.     [NSApp endSheet:window];
  84. }
  85.  
  86. - (void)updateSelection:sender
  87. {
  88.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  89.  
  90.     object = [objectArray selectedRow] + 1;
  91.     mono = [isMono state];
  92.     smooth = [isUnshaded state];
  93.  
  94.     [defaults setInteger:object forKey:@"GLMorphObjectType"];
  95.     [defaults setInteger:mono forKey:@"GLMorphMono"];
  96.     [defaults setInteger:smooth forKey:@"GLMorphUnshaded"];
  97.     
  98.     pinit();
  99.  
  100. }
  101.  
  102. @end